package q1.project.modules.system.tenant.dao;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Optional;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Repository;
import q1.project.common.enums.TenantStatusEnum;
import q1.project.modules.system.tenant.entity.TenantEntity;

/** 租户数据访问接口 */
@Repository
public interface TenantDao
    extends JpaRepository<TenantEntity, String>, JpaSpecificationExecutor<TenantEntity> {

  /** 根据租户编码查询 */
  Optional<TenantEntity> findByTenantCode(String tenantCode);

  /** 根据状态查询 */
  List<TenantEntity> findByStatus(TenantStatusEnum status);

  /** 检查租户编码是否存在 */
  boolean existsByTenantCode(String tenantCode);

  /** 根据管理员ID查询 */
  Optional<TenantEntity> findByAdminUserId(String adminUserId);

  /** 根据状态统计数量 */
  long countByStatus(TenantStatusEnum status);

  /** 统计指定时间之后创建的租户数量 */
  long countByCreateTimeAfter(LocalDateTime createTime);
}
